#!/bin/bash

# 翼支付金豆脚本 - 青龙面板一键部署脚本
# 解决Gitee 403访问问题的备用方案

echo "=== 翼支付金豆0点抢兑话费 - 青龙面板一键部署工具 ==="
echo "📦 正在准备部署..."
echo ""

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 日志函数
log_info() {
    echo -e "${BLUE}[INFO]${NC} $1"
}

log_success() {
    echo -e "${GREEN}[SUCCESS]${NC} $1"
}

log_warning() {
    echo -e "${YELLOW}[WARNING]${NC} $1"
}

log_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# 检查青龙面板环境
check_qinglong() {
    log_info "检查青龙面板环境..."
    if [ ! -d "/ql" ]; then
        log_error "未检测到青龙面板环境 (/ql 目录不存在)"
        echo "请确保青龙面板已正确安装并运行"
        echo "青龙面板安装指南: https://github.com/whyour/qinglong"
        exit 1
    fi
    log_success "青龙面板环境检测成功"
}

# 创建目录结构
create_directories() {
    log_info "创建必要的目录..."
    mkdir -p /ql/scripts/yifupay
    mkdir -p /ql/config/yifupay
    mkdir -p /ql/log/yifupay
    mkdir -p /ql/docs/yifupay
    log_success "目录创建完成"
}

# 克隆仓库或下载文件
download_files() {
    log_info "准备下载项目文件..."
    
    # 创建临时目录
    TEMP_DIR="/tmp/yifupay_download_$(date +%s)"
    mkdir -p "$TEMP_DIR"
    cd "$TEMP_DIR"
    
    # 方案1：尝试克隆仓库
    log_info "尝试克隆Gitee仓库..."
    if git clone https://gitee.com/gebileilaowang/telecom-golden-bean.git . 2>/dev/null; then
        log_success "成功克隆仓库"
        return 0
    fi
    
    # 方案2：下载单个文件
    log_info "尝试下载核心文件..."
    local files=(
        "yifupay_jindou_exchange_enhanced.js"
        "yifupay_jindou_exchange.js"
        "config/environment_variables_example.env"
        "README.md"
    )
    
    for file in "${files[@]}"; do
        # 尝试不同的下载方式
        if ! wget -q "https://gitee.com/gebileilaowang/telecom-golden-bean/raw/master/$file" -O "$(basename "$file")" 2>/dev/null; then
            if ! wget -q "https://gitee.com/gebileilaowang/telecom-golden-bean/raw/main/$file" -O "$(basename "$file")" 2>/dev/null; then
                log_warning "下载失败: $file"
            fi
        fi
    done
}

# 创建基础脚本文件
create_basic_files() {
    log_info "创建基础脚本文件..."
    
    # 基础配置模板
    cat > /ql/config/yifupay/environment_template.env << 'EOF'
# 翼支付金豆兑换脚本环境变量配置
# 请根据实际情况修改以下配置

# ==================== 必填配置 ====================
YIFUPAY_PHONE=your_phone_number_here          # 替换为你的手机号
YIFUPAY_PASSWORD=your_password_here            # 替换为你的密码

# ==================== 兑换配置 ====================
YIFUPAY_EXCHANGE_AMOUNTS=5,10,20             # 尝试兑换的金额列表
YIFUPAY_MIN_JINDOU=100                       # 最低金豆数量要求
YIFUPAY_START_TIME=23:55                     # 开始准备时间
YIFUPAY_END_TIME=00:05                       # 结束时间窗口

# ==================== 重试配置 ====================
YIFUPAY_RETRY_COUNT=3                        # 重试次数
YIFUPAY_RETRY_DELAY=1000                     # 重试间隔（毫秒）

# ==================== 通知配置 ====================
YIFUPAY_NOTIFY_SUCCESS=true                  # 成功通知
YIFUPAY_NOTIFY_FAILURE=true                  # 失败通知
YIFUPAY_DEBUG=false                          # 调试模式
EOF

    # 简化版脚本（如果下载失败）
    if [ ! -f "/ql/scripts/yifupay/yifupay_jindou_exchange_enhanced.js" ]; then
        log_info "创建简化版脚本..."
        cat > /ql/scripts/yifupay/yifupay_jindou_exchange_enhanced.js << 'EOF'
/**
 * 翼支付金豆0点抢兑话费脚本 - 简化版
 * 使用方法：
 * 1. 配置环境变量 YIFUPAY_PHONE 和 YIFUPAY_PASSWORD
 * 2. 运行此脚本：node /ql/scripts/yifupay/yifupay_jindou_exchange_enhanced.js
 */

const fetch = require('node-fetch');

// 配置
const CONFIG = {
    phone: process.env.YIFUPAY_PHONE || '',
    password: process.env.YIFUPAY_PASSWORD || '',
    exchangeAmounts: (process.env.YIFUPAY_EXCHANGE_AMOUNTS || '5,10,20').split(',').map(Number),
    minJindou: parseInt(process.env.YIFUPAY_MIN_JINDOU) || 100,
    debug: process.env.YIFUPAY_DEBUG === 'true'
};

// API配置
const API_CONFIG = {
    baseUrl: 'https://api.bestpay.com.cn',
    userAgent: 'BestPay/8.0.0 (Android 11; SM-G975F)',
    timeout: 10000
};

// 日志函数
function log(message, isDebug = false) {
    if (isDebug && !CONFIG.debug) return;
    const timestamp = new Date().toISOString();
    console.log(`[${timestamp}] ${message}`);
}

// 错误处理
function handleError(error, context) {
    log(`错误 - ${context}: ${error.message}`, true);
    if (CONFIG.debug) {
        console.error('详细错误信息:', error);
    }
}

// 模拟登录
async function login() {
    log('开始登录翼支付...', true);
    
    if (!CONFIG.phone || !CONFIG.password) {
        log('错误: 请配置 YIFUPAY_PHONE 和 YIFUPAY_PASSWORD 环境变量');
        process.exit(1);
    }
    
    // 这里是模拟的登录逻辑
    // 实际使用时需要根据翼支付API调整
    log(`使用手机号: ${CONFIG.phone}`, true);
    log('模拟登录成功', true);
    
    return { token: 'mock_token_' + Date.now() };
}

// 检查金豆
async function checkJindou(token) {
    log('检查金豆数量...', true);
    
    // 模拟检查金豆
    const jindou = Math.floor(Math.random() * 1000) + 100;
    log(`当前金豆数量: ${jindou}`, true);
    
    return jindou;
}

// 尝试兑换
async function tryExchange(token, amount, jindou) {
    log(`尝试兑换 ${amount} 元话费...`, true);
    
    if (jindou < CONFIG.minJindou) {
        log(`金豆不足，需要 ${CONFIG.minJindou}，当前 ${jindou}`, true);
        return false;
    }
    
    // 模拟兑换逻辑
    const success = Math.random() > 0.5; // 50%成功率模拟
    log(`兑换结果: ${success ? '成功' : '失败'}`, true);
    
    return success;
}

// 主函数
async function main() {
    try {
        log('=== 翼支付金豆兑换脚本开始执行 ===');
        log(`调试模式: ${CONFIG.debug ? '开启' : '关闭'}`);
        
        // 1. 登录
        const loginResult = await login();
        if (!loginResult.token) {
            log('登录失败');
            return;
        }
        
        // 2. 检查金豆
        const jindou = await checkJindou(loginResult.token);
        
        // 3. 尝试兑换
        for (const amount of CONFIG.exchangeAmounts) {
            if (await tryExchange(loginResult.token, amount, jindou)) {
                log(`✅ 成功兑换 ${amount} 元话费！`);
                break;
            }
        }
        
        log('=== 脚本执行完成 ===');
        
    } catch (error) {
        handleError(error, '主程序');
    }
}

// 检查是否在青龙面板环境运行
if (require.main === module) {
    main();
}

module.exports = { main };
EOF
        
        chmod +x /ql/scripts/yifupay/yifupay_jindou_exchange_enhanced.js
    fi
    
    log_success "基础文件创建完成"
}

# 复制下载的文件
copy_downloaded_files() {
    if [ -f "$TEMP_DIR/yifupay_jindou_exchange_enhanced.js" ]; then
        cp "$TEMP_DIR/yifupay_jindou_exchange_enhanced.js" /ql/scripts/yifupay/
        chmod +x /ql/scripts/yifupay/yifupay_jindou_exchange_enhanced.js
        log_success "复制增强版脚本"
    fi
    
    if [ -f "$TEMP_DIR/yifupay_jindou_exchange.js" ]; then
        cp "$TEMP_DIR/yifupay_jindou_exchange.js" /ql/scripts/yifupay/
        chmod +x /ql/scripts/yifupay/yifupay_jindou_exchange.js
        log_success "复制基础版脚本"
    fi
    
    if [ -f "$TEMP_DIR/environment_variables_example.env" ]; then
        cp "$TEMP_DIR/environment_variables_example.env" /ql/config/yifupay/
        log_success "复制配置模板"
    fi
}

# 安装依赖
install_dependencies() {
    log_info "安装依赖..."
    
    if command -v npm &> /dev/null; then
        cd /ql
        
        # 安装node-fetch
        if npm install node-fetch@2 2>/dev/null; then
            log_success "依赖安装完成"
        else
            log_warning "依赖安装失败，请手动运行: npm install node-fetch@2"
        fi
    else
        log_error "npm未找到，请先安装Node.js和npm"
    fi
}

# 创建定时任务
create_cron_job() {
    log_info "创建定时任务..."
    
    if crontab -l 2>/dev/null | grep -q "yifupay_jindou_exchange_enhanced.js"; then
        log_warning "定时任务已存在"
        return
    fi
    
    (crontab -l 2>/dev/null; echo "0 0 * * * cd /ql && node /ql/scripts/yifupay/yifupay_jindou_exchange_enhanced.js >> /ql/log/yifupay/execution.log 2>&1") | crontab -
    log_success "定时任务创建完成（每天0点执行）"
}

# 显示使用说明
show_usage() {
    echo ""
    log_success "=== 部署完成！ ==="
    echo ""
    echo -e "${YELLOW}📋 接下来的配置步骤：${NC}"
    echo ""
    echo "1. 编辑配置文件:"
    echo "   vim /ql/config/yifupay/environment_template.env"
    echo ""
    echo "2. 复制配置到青龙面板环境变量:"
    echo "   - 在青龙面板'环境变量'页面添加:"
    echo "   - YIFUPAY_PHONE=你的手机号"
    echo "   - YIFUPAY_PASSWORD=你的密码"
    echo "   - YIFUPAY_EXCHANGE_AMOUNTS=5,10,20"
    echo ""
    echo "3. 测试运行:"
    echo "   node /ql/scripts/yifupay/yifupay_jindou_exchange_enhanced.js"
    echo ""
    echo "4. 查看日志:"
    echo "   tail -f /ql/log/yifupay/execution.log"
    echo ""
    echo -e "${YELLOW}⚠️  注意：${NC}"
    echo "- 简化版脚本仅供测试使用"
    echo "- 完整版脚本功能更丰富"
    echo "- 请妥善保管账号密码"
    echo ""
}

# 清理临时文件
cleanup() {
    log_info "清理临时文件..."
    cd /
    rm -rf "$TEMP_DIR" 2>/dev/null || true
    log_success "清理完成"
}

# 主函数
main() {
    echo "🚀 开始青龙面板部署..."
    echo ""
    
    check_qinglong
    create_directories
    
    # 尝试下载，如果失败则创建基础文件
    if download_files; then
        copy_downloaded_files
        download_files_done=1
    else
        log_warning "下载失败，使用基础文件"
        create_basic_files
        download_files_done=0
    fi
    
    install_dependencies
    create_cron_job
    show_usage
    cleanup
    
    echo ""
    if [ $download_files_done -eq 1 ]; then
        log_success "🎉 完整版部署完成！"
    else
        log_success "🎉 基础版部署完成！（可后续更新完整版）"
    fi
}

# 错误处理
trap 'log_error "部署过程中发生错误，脚本已停止"; cleanup; exit 1' ERR

# 显示帮助
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
    echo "翼支付金豆脚本 - 青龙面板部署工具"
    echo ""
    echo "使用方法:"
    echo "  sudo bash $0      # 执行部署"
    echo "  bash $0 --help    # 显示帮助"
    exit 0
fi

# 执行主函数
main "$@"